Tesler’s Law 特斯勒定律
Tesler’s Law, also known as The Law of Conservation of Complexity, states that for any system there is a certain amount of complexity which cannot be reduced. 每個系統都有一定的複雜性,這種複雜性是沒法完全消除的。
Takeaways 要點
- 所有流程都存在不可消除的核心複雜性,必須由系統或使用者承擔。
- 設計和開發過程中,應儘量由系統承擔更多複雜性,減輕使用者負擔。
- 避免過度簡化介面導致資訊被抽象化,失去必要的功能或細節。
Origins 起源
20世紀80年代中期,Xerox PARC的電腦科學家Larry Tesler在制定桌面計算機互動設計規範時,認識到統一介面對使用者和開發者都有益,因為標準可放入共享軟體庫重用。在蘋果期間,他開發了"通用應用"框架,讓開發更容易。特斯勒用"複雜性守恆"說服蘋果:軟體可以更復雜,只要減輕使用者負擔。他解釋:"如果百萬使用者每天浪費一分鐘解決工程師一週能修復的問題,就是讓使用者為工程師方便付出代價。"
複雜性偏差 Complexity Bias
複雜性偏差是一種思維習慣,讓我們更喜歡複雜而不是簡單的解決方案:我們常把複雜和聰明聯絡在一起。當我們不完全理解某事時,往往會把簡單的事情想得太複雜。研究表明人們猜測規則時更傾向於複雜解釋,常常忽略簡單答案。
設計風險:如果你總是選擇複雜方案,可能說明你對問題理解不夠,需要更深入思考。
Examples 案例分析
發郵件必須有兩個資訊:發件人(你)和收件人。缺一不可,這是基本要求。現代郵箱透過這些方式讓使用更簡單:自動填入你的郵箱地址作為發件人。輸入時根據你的聯絡人自動推薦收件人。複雜性沒有消失,只是轉移給了系統開發團隊,他們提前解決了這些問題。
Gmail 進一步透過“智慧撰寫”和“智慧回覆”功能,減少打字負擔;複雜的匹配、預測邏輯被隱藏在後臺,實現了使用者體驗的簡化。

Gmail 引入了人工智慧功能 Smart Compose:在使用者輸入時預測並建議句子完成方式。與 Smart Reply(自動建議快速回復)配合使用,提高效率。

在電商網站的結賬過程中,使用者需要填寫大量重複的賬單與收貨資訊。為簡化流程,許多網站:
提供“收貨地址與賬單地址相同”選項,自動繼承資訊,避免重複輸入。這將複雜性轉移到前端和後端的系統實現,而非使用者手動填寫。

Apple Pay 透過預先繫結支付資訊,使使用者只需在結賬時選擇支付方式並驗證即可,無需額外輸入資訊。複雜性被轉移到支付平臺的技術實現上,使用者體驗顯著簡化。

Amazon Go 門店利用機器學習、計算機視覺和人工智慧,讓顧客:進店時用 App 簽到、自由拿取商品、直接離店,系統會自動扣款併傳送收據,免去了排隊、掃描和支付步驟。背後包含人工智慧、視覺識別、大資料等複雜技術

Mixpanel 的 Spark 功能,使用者可直接用文字提問來生成資料分析結果。這種方式降低了複雜功能的使用門檻,將技術細節隱藏在系統內部。

活躍使用者悖論 Paradox of the Active User
- 使用者傾向於跳過閱讀說明書,直接開始使用軟體,以便立即完成任務。
- 長遠來看,先學習再使用可能更高效,但使用者的即時動機往往優先。
- 設計上應透過產品體驗引導使用者學習,而不是假設他們會主動閱讀文件,例如透過內嵌提示或工具提示(tooltips)。
漸進揭示 Progressive Disclosure
漸進揭示是一種互動設計技巧,初始只顯示最重要的內容或操作,將次要功能或高階選項隱藏在可訪問的選單中:減少視覺雜亂與認知負擔,讓使用者注意力集中在主要任務
Stripe 網站的導航,滑鼠懸停時才顯示詳細選單,讓介面簡潔且便於快速瀏覽。

8 Design Guidelines for Complex Applications 複雜應用的8條設計指導原則
複雜應用指的是:為具有高度專業知識的使用者服務,支援非線性工作流和廣泛目標的應用程式。這類系統通常:
- 服務於受過專門訓練的使用者群體;
- 處理龐大的資料集,進行高階的資料分析;
- 支援目標不明確、任務路徑多變的問題解決;
- 涉及多個角色、工具和平臺之間的協作;
- 應對高風險任務,例如涉及生命或高額財務損失的操作。
1. 透過“做中學”促進學習
使用者通常不喜歡先閱讀說明書,而是希望立即開始使用,即使系統複雜。這種現象被稱為“主動使用者悖論”。因此,設計時應支援使用者邊做邊學:允許使用者在試錯中學習;避免讓使用者做出一長串操作後才能看到結果;

2. 幫助使用者採用更高效的方法
許多使用者即使長期使用複雜系統,也很少真正成為高效專家。他們習慣於“差不多就行”的方法(satisficing),哪怕效率低。設計應:透過非干擾式方式提示更快的操作;

3. 提供靈活的路徑和流程
使用者面對的往往是目標模糊、過程非線性的任務,不適合強制的線性流程。設計應:允許跳步、回退、調整順序;

4. 幫助使用者記錄操作與思路
複雜任務常常中斷、週期長,使用者需要依賴記憶保持思路。為減輕記憶負擔,設計應:支援使用者新增註釋、記錄思考過程;

5. 協調多工具與多工作區之間的轉換
複雜應用使用者常跨平臺、跨工具操作。應承認這種生態,降低切換成本:

6. 減少介面雜亂,但不犧牲功能
複雜系統常支援廣泛場景,功能多,導致介面擁擠。設計應:運用“分階段展示”(staged disclosure)減少資訊一次性顯示;

7. 簡化主次資訊之間的切換
資訊分層不可避免。關鍵是讓使用者無需跳轉頁面就能獲取次要資訊:

8. 使關鍵資訊在視覺上突出
使用者需從大量資訊中找到重點。設計應:透過減少無關視覺元素,提升關鍵資訊的突出性;

